#include <iostream>
#include <string>
#include <algorithm> 
using namespace std;

int main() {
	string a,b;
	cin>>a>>b;
	int p1=a.find(".");
	int p2=b.find(".");
	string az=a.substr(0,p1);
	string af=a.substr(p1+1);
	string bz=b.substr(0,p2);
	string bf=b.substr(p2+1);
	reverse(az.begin(),az.end());
	reverse(bz.begin(),bz.end());
	int raz[201]={0};
	int raf[200]={0};
	int rbz[201]={0};
	int rbf[200]={0};
	int le1=az.length();
	int le2=af.length();
	int le3=bz.length();
	int le4=bf.length();
	for(int i=0;i<le1;i++){
		raz[i]=az[i]-'0';
	}
	for(int i=0;i<le2;i++){
		raf[i]=af[i]-'0';
	}
	for(int i=0;i<le3;i++){
		rbz[i]=bz[i]-'0';
	}
	for(int i=0;i<le4;i++){
		rbf[i]=bf[i]-'0';
	}
	int rez[201]={0};
	int ref[200]={0};
	int add=0;
	for(int i=max(le2,le4)-1;i>=0;i--){
		ref[i]=(raf[i]+rbf[i]+add)%10;
		add=(raf[i]+rbf[i]+add)/10;
	}
	raz[0] += add;
	add = 0; 
	for(int i=0;i<201;i++){
		rez[i]=(raz[i]+rbz[i]+add)%10;
		add=(raz[i]+rbz[i]+add)/10;	
	}
	int flag=0;
	int i;
	for(i=200;i>=0;i--){
		if(rez[i]!=0){
			flag=1;
		}
		if(flag==1){
			cout<<rez[i]<<"";
		}
	}
	if(flag==0){
		cout<<"0";
	}
	cout<<".";
int lastNonZero = -1;
for (i = 199; i >=0; i--) {
    if (ref[i] != 0) {
        lastNonZero = i;
        break;
    }
}
if (lastNonZero != -1) {
    for (i = 0; i <= lastNonZero; i++) {
        cout << ref[i];
    }
} 
if(lastNonZero== -1){
		cout<<"0";
	}
	return 0;
}
